package Managers;

import java.util.ArrayList;

import org.apache.struts2.ServletActionContext;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

import Entidades.Campeonato;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.opensymphony.xwork2.ActionSupport;

public class CampeonatosManager extends ActionSupport{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private MyFileManager f_m;
	private JSONArray campeonatos;
	private Gson gson;
	private JSONObject campeonatosJson = null;
	private String filePath;
	private String datos_archivo;
	
	public CampeonatosManager(){
		f_m = new MyFileManager();
		gson = new GsonBuilder().disableHtmlEscaping().create();
		filePath = ServletActionContext.getServletContext().getRealPath("/");
		datos_archivo = "";
		leerCampeonatos();
		
	}
	
	public JSONArray obtenerCampeonatos (){
		return campeonatos;
	}
	
	private void leerCampeonatos(){

		String campeonatos_string = f_m.read(filePath + getText("campeonatos.file_name"));
		System.out.println("Campeonatos lenght " + campeonatos_string.length() );
		if (campeonatos_string.length() > 0){
			try {
				campeonatosJson = (JSONObject)new JSONParser().parse(campeonatos_string);
			} catch (ParseException e) {
				e.printStackTrace();
			}
		}
		
		if (campeonatosJson == null){
		    
			// convert java object to JSON format,  
			// and returned as JSON formatted string  
			campeonatosJson = new JSONObject();
			
			ArrayList<Campeonato> campeonatos_array = new ArrayList<Campeonato>();
			campeonatosJson.put("campeonatos", campeonatos_array);
			
			String json = gson.toJson(campeonatosJson);
			f_m.write(json,filePath + getText("campeonatos.file_name"),false);
			campeonatos = new JSONArray();
		}else{			
			campeonatos = (JSONArray) campeonatosJson.get("campeonatos");
		}
		
		
	}
	
	public boolean agregarCampeonato(Campeonato  p){

		p.setId(campeonatos.size()+1);
		campeonatosJson = new JSONObject();
		String camp = gson.toJson(p);
		campeonatos.add(camp);
		campeonatosJson.put("campeonatos", campeonatos);
		return f_m.write(gson.toJson(campeonatosJson),filePath + getText("campeonatos.file_name"),false);
	}
	
	
}
